package fr.ajicommerce;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import org.primefaces.context.RequestContext;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;

import fr.ajicommerce.core.dto.CopieProduitDTO;
import fr.ajicommerce.core.dto.LigneProduitDTO;
import fr.ajicommerce.core.dto.ProduitDTO;

@Component("panier")
@Transactional
public class PanierSession implements Serializable {

	private static final long serialVersionUID = 150081781654492718L;

	private List<LigneProduitDTO> listeLigneCommande;

	public void supprimer(LigneProduitDTO ligneCommande) {
		listeLigneCommande.remove(ligneCommande);
		RequestContext context = RequestContext.getCurrentInstance();
		context.update("ssTT");
	}

	public PanierSession() {
		listeLigneCommande = new ArrayList<>();
		

	}

	public double sousTotal() {
		double resultat = 0;
		for (LigneProduitDTO ligne : listeLigneCommande) {
			resultat += ligne.sousTotal();
		}
		return resultat;
	}

	public void ajouter(ProduitDTO produit) {
		System.out.println("j'ajoute des objets" + this);
		boolean estDejaDansPanier = false;
		for (LigneProduitDTO prL : listeLigneCommande) {
			if (prL.getCopieProduit().getProduit().equals(produit)) {
				prL.setQuantite(prL.getQuantite() + 1);
				estDejaDansPanier = true;
			}
		}

		if (estDejaDansPanier == false) {
			CopieProduitDTO copieProduitDTO = new CopieProduitDTO();
			copieProduitDTO.setProduit(produit);
			copieProduitDTO.setPrixInstantCommande(produit.getPrix());
			LigneProduitDTO l = new LigneProduitDTO();
			l.setCopieProduit(copieProduitDTO);
			l.setQuantite(1);
			listeLigneCommande.add(l);
		}
		
		System.out.println(listeLigneCommande);

	}

	public List<LigneProduitDTO> getListeLigneCommande() {
		return listeLigneCommande;
	}

	public void setListeLigneCommande(List<LigneProduitDTO> listeLigneCommande) {
		this.listeLigneCommande = listeLigneCommande;
	}

	public static long getSerialversionuid() {
		return serialVersionUID;
	}
	
	

}
